home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 1 / Atari Mega Archive - Volume 1.iso / language / elisp.zoo / lisp / bytecomp.elc < prev    next >
Text File  |  1988-08-31  |  29KB  |  673 lines

  1.  
  2. (provide (quote byte-compile))
  3.  
  4. (defvar byte-compile-constnum -1 "\
  5. Transfer vector index of last constant allocated.")
  6.  
  7. (defvar byte-compile-constants nil "\
  8. Alist describing contents to put in transfer vector.
  9. Each element is (CONTENTS . INDEX)")
  10.  
  11. (defvar byte-compile-macro-environment nil "\
  12. Alist of (MACRONAME . DEFINITION) macros defined in the file
  13. which is being compiled.")
  14.  
  15. (defvar byte-compile-pc 0 "\
  16. Index in byte string to store next opcode at.")
  17.  
  18. (defvar byte-compile-output nil "\
  19. Alist describing contents to put in byte code string.
  20. Each element is (INDEX . VALUE)")
  21.  
  22. (defvar byte-compile-depth 0 "\
  23. Current depth of execution stack.")
  24.  
  25. (defvar byte-compile-maxdepth 0 "\
  26. Maximum depth of execution stack.")
  27.  
  28. (defconst byte-varref 8 "\
  29. Byte code opcode for variable reference.")
  30.  
  31. (defconst byte-varset 16 "\
  32. Byte code opcode for setting a variable.")
  33.  
  34. (defconst byte-varbind 24 "\
  35. Byte code opcode for binding a variable.")
  36.  
  37. (defconst byte-call 32 "\
  38. Byte code opcode for calling a function.")
  39.  
  40. (defconst byte-unbind 40 "\
  41. Byte code opcode for unbinding special bindings.")
  42.  
  43. (defconst byte-constant 192 "\
  44. Byte code opcode for reference to a constant.")
  45.  
  46. (defconst byte-constant-limit 64 "\
  47. Maximum index usable in  byte-constant  opcode.")
  48.  
  49. (defconst byte-constant2 129 "\
  50. Byte code opcode for reference to a constant with vector index >= 0100.")
  51.  
  52. (defconst byte-goto 130 "\
  53. Byte code opcode for unconditional jump")
  54.  
  55. (defconst byte-goto-if-nil 131 "\
  56. Byte code opcode for pop value and jump if it's nil.")
  57.  
  58. (defconst byte-goto-if-not-nil 132 "\
  59. Byte code opcode for pop value and jump if it's not nil.")
  60.  
  61. (defconst byte-goto-if-nil-else-pop 133 "\
  62. Byte code opcode for examine top-of-stack, jump and don't pop it if it's nil,
  63. otherwise pop it.")
  64.  
  65. (defconst byte-goto-if-not-nil-else-pop 134 "\
  66. Byte code opcode for examine top-of-stack, jump and don't pop it if it's not nil,
  67. otherwise pop it.")
  68.  
  69. (defconst byte-return 135 "\
  70. Byte code opcode for pop value and return it from byte code interpreter.")
  71.  
  72. (defconst byte-discard 136 "\
  73. Byte code opcode to discard one value from stack.")
  74.  
  75. (defconst byte-dup 137 "\
  76. Byte code opcode to duplicate the top of the stack.")
  77.  
  78. (defconst byte-save-excursion 138 "\
  79. Byte code opcode to make a binding to record the buffer, point and mark.")
  80.  
  81. (defconst byte-save-window-excursion 139 "\
  82. Byte code opcode to make a binding to record entire window configuration.")
  83.  
  84. (defconst byte-save-restriction 140 "\
  85. Byte code opcode to make a binding to record the current buffer clipping restrictions.")
  86.  
  87. (defconst byte-catch 141 "\
  88. Byte code opcode for catch.  Takes, on stack, the tag and an expression for the body.")
  89.  
  90. (defconst byte-unwind-protect 142 "\
  91. Byte code opcode for unwind-protect.  Takes, on stack, an expression for the body
  92. and an expression for the unwind-action.")
  93.  
  94. (defconst byte-condition-case 143 "\
  95. Byte code opcode for condition-case.  Takes, on stack, the variable to bind,
  96. an expression for the body, and a list of clauses.")
  97.  
  98. (defconst byte-temp-output-buffer-setup 144 "\
  99. Byte code opcode for entry to with-output-to-temp-buffer.
  100. Takes, on stack, the buffer name.
  101. Binds standard-output and does some other things.
  102. Returns with temp buffer on the stack in place of buffer name.")
  103.  
  104. (defconst byte-temp-output-buffer-show 145 "\
  105. Byte code opcode for exit from with-output-to-temp-buffer.
  106. Expects the temp buffer on the stack underneath value to return.
  107. Pops them both, then pushes the value back on.
  108. Unbinds standard-output and makes the temp buffer visible.")
  109.  
  110. (defconst byte-nth 56)
  111.  
  112. (defconst byte-symbolp 57)
  113.  
  114. (defconst byte-consp 58)
  115.  
  116. (defconst byte-stringp 59)
  117.  
  118. (defconst byte-listp 60)
  119.  
  120. (defconst byte-eq 61)
  121.  
  122. (defconst byte-memq 62)
  123.  
  124. (defconst byte-not 63)
  125.  
  126. (defconst byte-car 64)
  127.  
  128. (defconst byte-cdr 65)
  129.  
  130. (defconst byte-cons 66)
  131.  
  132. (defconst byte-list1 67)
  133.  
  134. (defconst byte-list2 68)
  135.  
  136. (defconst byte-list3 69)
  137.  
  138. (defconst byte-list4 70)
  139.  
  140. (defconst byte-length 71)
  141.  
  142. (defconst byte-aref 72)
  143.  
  144. (defconst byte-aset 73)
  145.  
  146. (defconst byte-symbol-value 74)
  147.  
  148. (defconst byte-symbol-function 75)
  149.  
  150. (defconst byte-set 76)
  151.  
  152. (defconst byte-fset 77)
  153.  
  154. (defconst byte-get 78)
  155.  
  156. (defconst byte-substring 79)
  157.  
  158. (defconst byte-concat2 80)
  159.  
  160. (defconst byte-concat3 81)
  161.  
  162. (defconst byte-concat4 82)
  163.  
  164. (defconst byte-sub1 83)
  165.  
  166. (defconst byte-add1 84)
  167.  
  168. (defconst byte-eqlsign 85)
  169.  
  170. (defconst byte-gtr 86)
  171.  
  172. (defconst byte-lss 87)
  173.  
  174. (defconst byte-leq 88)
  175.  
  176. (defconst byte-geq 89)
  177.  
  178. (defconst byte-diff 90)
  179.  
  180. (defconst byte-negate 91)
  181.  
  182. (defconst byte-plus 92)
  183.  
  184. (defconst byte-max 93)
  185.  
  186. (defconst byte-min 94)
  187.  
  188. (defconst byte-point 96)
  189.  
  190. (defconst byte-goto-char 98)
  191.  
  192. (defconst byte-insert 99)
  193.  
  194. (defconst byte-point-max 100)
  195.  
  196. (defconst byte-point-min 101)
  197.  
  198. (defconst byte-char-after 102)
  199.  
  200. (defconst byte-following-char 103)
  201.  
  202. (defconst byte-preceding-char 104)
  203.  
  204. (defconst byte-current-column 105)
  205.  
  206. (defconst byte-indent-to 106)
  207.  
  208. (defconst byte-eolp 108)
  209.  
  210. (defconst byte-eobp 109)
  211.  
  212. (defconst byte-bolp 110)
  213.  
  214. (defconst byte-bobp 111)
  215.  
  216. (defconst byte-current-buffer 112)
  217.  
  218. (defconst byte-set-buffer 113)
  219.  
  220. (defconst byte-read-char 114)
  221.  
  222. (defconst byte-interactive-p 116)
  223.  
  224. (defun byte-recompile-directory (directory &optional arg) "\
  225. Recompile every .el file in DIRECTORY that needs recompilation.
  226. This is if a .elc file exists but is older than the .el file.
  227. If the .elc file does not exist, offer to compile the .el file
  228. only if a prefix argument has been specified." (interactive "DByte recompile directory: 
  229. P") (byte-code "אêו êז✓!ë⓪êח✓אט#יאא⑨    àcכ    @!?àOז    @✓\"ë④àOל !מPë⑤àOנ!âDס \"éO╱àOעפ צQ!àZק !ê♪Të③ê    Aë①êé⑦êרש♪♪תUâqןérך#,ç" [directory files nil count source dest arg save-some-buffers expand-file-name directory-files "\\.el\\'" 0 auto-save-file-name-p file-name-sans-versions "c" file-exists-p file-newer-than-file-p y-or-n-p "Compile " "? " byte-compile-file message "Done (Total of %d file%s compiled)" 1 "" "s"] 15))
  230.  
  231. (defun byte-compile-file (filename) "\
  232. Compile a file of Lisp code named FILENAME into a file of byte code.
  233. The output file's name is made by appending \"c\" to the end of FILENAME." (interactive "fByte compile file: ") (byte-code "גêט✓!ë⓪êיכ✓\"êלמ!לנ!גגג╱ə⑨è    qêס êע✓!êפbê
  234. qêצ êס êè    qêקר!êשת!àHןפ!êé7êm?)àaך    !ë⑥╱êםף╱!
  235. \"êé3ê
  236. qêפbêץ§גו#àÄש∧!àè∞α!êקβ!êשΓ!àèπפ!êΣcêéhêפbêץ§גו#àכשσ!àז`S✓גµτÅàוקβ!ê✓èΦ ê`)=àושΓ!àוπפ!êΣc)êéÆêו    ΘפdΩ✓!δP#)ê∮p!ê∮    !)-êוç" [filename inbuffer outbuffer byte-compile-macro-environment nil case-fold-search sexp t this-line vms-stmlf-recfm expand-file-name message "Compiling %s..." get-buffer-create " *Compiler Input*" " *Compiler Output*" erase-buffer insert-file-contents 1 emacs-lisp-mode skip-chars-forward "     
  237. " looking-at ";" forward-line read print byte-compile-file-form search-forward "
  238. (" "defun \\|autoload " forward-sexp 3 " " "\"" forward-char "\\
  239. " "defvar \\|defconst " (byte-code "IJא!êijç" [t forward-sexp 3] 2) ((error (byte-code "ijç" [nil] 1))) beginning-of-line write-region file-name-sans-versions "c" kill-buffer] 32))
  240.  
  241. (defun byte-compile-file-form (form) (byte-code "✓<?â
  242. ✓éö✓@ז>âä✓A@⑨ח    ♪\"ə✓@ט=â_יכ ל✓8#ê
  243. â4מ
  244. ד\"éJנ    !à@ס    K!ע=àJ    דB♪Bë③êטפ✓A!B╱?à[יצ \"êéÇ
  245. ânמ
  246. ק✓AAB\"éy    ק✓AABB♪Bë③êרפ✓A!B*éö✓@ש=âôת✓!ê✓éö✓ç" [form name tem byte-compile-macro-environment filename nil noninteractive t (defun defmacro) assq defun message "Compiling %s (%s)..." 1 setcdr fboundp car-safe macro byte-compile-lambda "Compiling %s..." lambda defmacro require eval] 11))
  247.  
  248. (defun byte-compile (funname) "\
  249. Byte-compile the definition of function FUNNAME (a symbol)." (byte-code "IJ✓!à א✓K!ב=à⑤✓ג✓K!Mç" [funname fboundp car-safe lambda byte-compile-lambda] 5))
  250.  
  251. (defun byte-compile-lambda (fun) (byte-code "    A⑧גד✓A\"əה✓A@;à⑥✓Aë⓪êוז✓AB!Cë③ê
  252. àB
  253. A@;å0
  254. A@?â7
  255. é>דו
  256. A@!D♪Bë③ê✓    A=?àRח    8♪Bë③ê    @    A@♪BB+ç" [bodyptr fun int newbody assq interactive nil byte-compile-top-level progn 2] 6))
  257.  
  258. (defun byte-compile-top-level (form) (byte-code "IJIJלללIJIJIJ✓◆╱ə⑧IJIJמ♪
  259.     נ !ë⑥
  260. ê
  261. @ë⑥ êס
  262. A!ë⑥    ê    àU♪Të⑥♪ê    @♪B✓Bë⓪ê    Aë⑥    êé4ê♪ë②+êע !êפצל\"êק
  263. TIJ\"ë⑥✓ê✓àà✓✓@A✓@@Iê✓Aë⓪êéoêר♪ל\"ë⑥◆ê╱à⌐◆╱@@╱@AIê╱Aë⑥╱êéÄêש◆✓F.✓ç" [byte-compile-constants nil byte-compile-constnum byte-compile-pc byte-compile-depth byte-compile-maxdepth byte-compile-output byte-compile-st